<?php

/**
 * OfertasController
 * 
 * @package Sgit 
 * @author Juan Manuel Martinez Carrillo
 * @copyright Juan Manuel Martinez Carrillo
 * @version 2012
 * @access public
 * @revision 17/02/2012 9:06:
 * 
 */


/**
 * 
 * SuperUser tiene acceso a todo,
 * Solo los usuarios con acceso tiene activo el enlace (grupo acceso, superuser,prl,gma)
 * 
 * 
 */


class OfertasController extends Sgit_Controller_Action
{
    
    
    protected $_main_model = 'Ofertas';
    protected $_main_form = 'Ofertas';
    
    protected $_esSuperUser=null;
    
    protected $_add_users_all = array(
        32, //MAM
        34, //SHO
        82, //RCC
        99, //Rai
        100, //Javier campo
        106, //Lucia
        166, //J LLosa
        118, //Piscione
        109, //marta
        
    );
    
    
    function _begin()
    {
        $this->setParam('estado', 1);
        $this->_element->OfertasAreas = new Sgit_Form_Element_Select_OfertasAreas('id_area_oferta');
        $this->_element->OfertasEstado = new Sgit_Form_Element_Select_OfertasEstado('estado');
        
        $this->_loadModel('Facilitie');
        
        $facility=$this->_model->Facilitie->GetAssoc('id_zona','id_usuario');
        
        $acceso_predefinido[1][]=$facility[1];
        $acceso_predefinido[2][]=$facility[2];
        $acceso_predefinido[3][]=$facility[3];
        $acceso_predefinido[3][]=29;
        $acceso_predefinido[3][]=41;
        $acceso_predefinido[3][]=70;
        $acceso_predefinido[4][]=$facility[4];
        $acceso_predefinido[4][]=29;
        $acceso_predefinido[4][]=41;
        $acceso_predefinido[4][]=70;
        $acceso_predefinido[6][]=$facility[6];
        
        
     
        
        $this->view->acceso_predefinido=$acceso_predefinido;
  
  
    }
    
    
    protected function _rows()
    {
        //predefinir valores de filtros

        $filtros = new Sgit_Form_Filtros();
        
        $filtros->addFormSelect(new Sgit_Form_Element_Select_Usuarios('jefe1', array('label' => "Responsable"), null, array('estado=?' => 1)));
        $filtros->addFormSelect(new Sgit_Form_Element_Select_Datacenter('id_zona'));
        $filtros->addFormSelect($this->_element->OfertasEstado);
        $filtros->addFormSelect($this->_element->OfertasAreas);
        $values = $this->_getFiltrosValues($filtros);
        //$filtros->addPdf();
        //$filtros->addExcel();
        $filtros->myRender();
        $rows = $this->_model->default->getOfertas($values);
        
         
        
        
        
        $max_level=0;
        foreach($rows as $v){
            $max_level= ($v['level'] > $max_level) ? $v['level'] : $max_level;
        }
        
        $this->_max_level=$max_level;

        return $this->_prepareRowsToTr($rows);
    }


    public function indexAction()
    {
        

        
        $rows= $this->_rows();
        
  
        
        $this->view->rows =$rows;
 
        $campos_suma=array('superficie','potencia','coste','venta');
        
        $this->view->suma = Sgit_Util_Suma::run($rows,$campos_suma);
        
        
    }


    public function pdfAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);

        $pdf = new Sgit_Pdf('L');
        $pdf->setColumnas($this->_getXml());
        $pdf->SetTitle('Proyectos DC');
        $pdf->render($this->_rows(), $this->_controllerName);
    }

    public function excelAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);

        $excel = new Sgit_Excel();
        $excel->setColumnas($this->_getXml());
        $excel->render($this->_rows(), $this->_controllerName);
    }

    public function insertarAction()
    {
        $this->_insertar();
    }

    public function editarAction()
    {
        $this->_editar();
    }

    public function borrarAction()
    {
        $this->_borrar();
    }

    protected function _prepareValuesToForm($row)
    {

        $row['disponibilidad_rack'] = 1500;
        $row['disponibilidad'] = 500;

        if (!$row['id'])
        {
            $row['accesos'] = $this->_add_users_all;
            $row['id_usuario'] = $this->_auth->getIdentity()->id;
        } else
        {
            if($row['id_zona']) $this->_form->getElement('ubicacion')->setAttrib('disabled',true);
            $row['accesos'] = unserialize($row['accesos']);
            $row['f_prevista'] =  Sgit_Filter_DateDbToForm::filter($row['f_prevista']);
            
        }

        return $row;
    }


    protected function _prepareValuesToDb()
    {

        $row = $this->_form->getValues();
        
        if($this->_actionName=='insertar'){
            $row['f_apertura'] = date('Y-m-d');
        }
        
        
        $row['f_prevista'] = Sgit_Filter_DateToDb::filter($row['f_prevista']);
        $row['accesos'] = $this->_creaValueAccesosToDB($row['accesos'], $row['id_usuario']);
        
        unset($row['disponibilidad_rack']);
        
        return $row;
    }

    function _creaValueAccesosToDB($accesos, $jefe1)
    {

        if ($accesos)
        {
            if (is_array($accesos))
            {
                $permisos = $accesos;
                $permisos[] = $jefe1;
            } else
            {
                $permisos[] = $accesos;
                $permisos[] = $jefe1;
            }
        } else
        {
            $permisos[] = $jefe1;
        }


        return serialize($permisos);
    }


    protected function _prepareValuesToTr($v)
    {
        
        $v['last_post']  = Sgit_Filter_DateDbToLocalize::filter($v['last_post'],'',$v['created_on']);
        $v['f_prevista'] = Sgit_Filter_DateDbToLocalize::filter($v['f_prevista']);
        
        $v['level']=($v['level']) ?  100*(1-($v['level']/$this->_max_level)) : 0;
        
        $v['zona']=($v['zona']) ?  $v['zona']:  $v['ubicacion'];
        
       
      
        $v['area'] =    $this->_element->OfertasAreas->getMultiOption($v['id_area_oferta']);
        $v['estado'] =  $this->_element->OfertasEstado->getMultiOption($v['estado']);
        $v['permitido'] = $this->_checkPermiso($v['accesos']);
        
        $pid = 'OF' . str_pad($v['id'], 4, "0", STR_PAD_LEFT);
        $v['cliente'] = $pid . ' - ' . $v['cliente'];
        
        
        return $v;
    }


    protected function _getFila($id)
    {
        $row = $this->_model->default->GetOferta($id);
        $row = $this->_prepareValuesToTr($row);
        return $row;
    }


    public function _checkPermiso($accesos)
    {

        
        //esta en lista acceso
        $validator = new Zend_Validate_InArray(unserialize($accesos));
        if ($validator->isValid($this->_auth->getIdentity()->id))
        {
            return true;
        }

        //Esta en la lista de usuarios con acceso a todo
        $validator = new Zend_Validate_InArray($this->_add_users_all);
        if ($validator->isValid($this->_auth->getIdentity()->id))
        {
            return true;
        }

        
        
        if(is_null($this->_esSuperUser)){
            //este en la lista de acceso o que sea superuser
            $validatorsup = new Sgit_Validate_isSuperuser();
            $this->_esSuperUser=$validatorsup->isValid();
        }
        
        if ($this->_esSuperUser===true) return true;

  
        
   
        return false;

    }


}
